home *** CD-ROM | disk | FTP | other *** search
- # Simple syslog
-
- import sys, os
- from socket import *
- from select import select
-
- class Syslogd:
- def goSyslog(self, output, sockName):
- sock = socket(AF_UNIX, SOCK_STREAM)
-
- try:
- os.unlink(sockName)
- except os.error:
- pass
-
- sock.bind(sockName)
- acceptedFds = []
- sock.listen(5)
-
- while (1):
- list = acceptedFds + [ sock ]
- list = select(list, [], [])[0]
- try:
- list.remove(sock)
- (fd, remoteAddr) = sock.accept()
- acceptedFds.append(fd)
- except ValueError:
- pass
-
- for fd in list:
- msg = fd.recv(50)
- if (msg):
- output.write(msg)
- else:
- acceptedFds.remove(fd)
- fd.close()
-
- def __del__(self):
- self.kill()
-
- def kill(self):
- os.kill(self.child, 15)
- os.waitpid(self.child, 0)
-
- def __init__(self, root = "", output = sys.stdout, socket = "/dev/log"):
- output = output
- filename = root + socket;
- self.goSyslog(output, filename)
-